library(tidyverse)
## -- Attaching packages ------------------------------------------------------ tidyverse 1.2.1 --
## v ggplot2 3.2.1     v purrr   0.3.2
## v tibble  2.1.3     v dplyr   0.8.3
## v tidyr   0.8.3     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.4.0
## -- Conflicts --------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(readxl)
library(gganimate)
library(datapasta)

c2015 <- read_xlsx("c2015.xlsx")

c2015.clean <- c2015 %>% 
  drop_na() %>% 
  filter_all(~!(.=='Unknown')) %>% 
  filter_all(~!(.=='Not Rep')) %>% 
  filter_all(~!(.==str_detect(.,'Not Rep'))) %>% 
  filter_all(~!(.==str_detect(.,'Unknown'))) %>% 
  filter_all(~!(.=='Not Reported')) %>% 
  filter(SEAT_POS=='Front Seat, Left Side') %>% 
  mutate(AGE = as.numeric(AGE),
         TRAV_SP = ifelse(TRAV_SP == "Stopped", 0, as.numeric(str_remove(TRAV_SP, "MPH"))))
## Warning in ifelse(TRAV_SP == "Stopped", 0, as.numeric(str_remove(TRAV_SP, :
## NAs introduced by coercion

1 & 2. Plotting with moving transitions between months.

c2015.plot <- c2015.clean %>% 
  group_by(SEX, INJ_SEV, MONTH) %>% 
  mutate(MEAN_SP = mean(TRAV_SP))

c2015.plot %>% 
  ggplot(aes(MONTH, MEAN_SP, fill = SEX)) + 
  geom_col() +
  transition_states(MONTH) +
  labs(title = 'MONTH = {closest_state}')

c2015.plot %>% 
  ggplot(aes(DRINKING, fill = SEX)) + 
  geom_bar() +
  transition_states(MONTH) +
  labs(title = 'MONTH = {closest_state}') +
  geom_text(stat = 'count', aes(label = ..count..))

  1. Importing the household debt and credit data.
debt <- tibble::tribble(
     ~Quarter, ~Mortgage, ~HE.Revolving, ~Auto.Loan, ~Credit.Card, ~Student.Loan, ~Other, ~Total,
      "03:Q1",      4.94,          0.24,       0.64,         0.69,          0.24,   0.48,   7.23,
      "03:Q2",      5.08,          0.26,       0.62,         0.69,          0.24,   0.49,   7.38,
      "03:Q3",      5.18,          0.27,       0.68,         0.69,          0.25,   0.48,   7.56,
      "03:Q4",      5.66,           0.3,        0.7,          0.7,          0.25,   0.45,   8.07,
      "04:Q1",      5.84,          0.33,       0.72,          0.7,          0.26,   0.45,   8.29,
      "04:Q2",      5.97,          0.37,       0.74,          0.7,          0.26,   0.42,   8.46,
      "04:Q3",      6.21,          0.43,       0.75,         0.71,          0.33,   0.41,   8.83,
      "04:Q4",      6.36,          0.47,       0.73,         0.72,          0.35,   0.42,   9.04,
      "05:Q1",      6.51,           0.5,       0.73,         0.71,          0.36,   0.39,   9.21,
      "05:Q2",       6.7,          0.53,       0.77,         0.72,          0.37,    0.4,   9.49,
      "05:Q3",      6.91,          0.54,       0.83,         0.73,          0.38,   0.41,   9.79,
      "05:Q4",       7.1,          0.57,       0.79,         0.74,          0.39,   0.42,     10,
      "06:Q1",      7.44,          0.58,       0.79,         0.72,          0.43,   0.42,  10.38,
      "06:Q2",      7.76,          0.59,        0.8,         0.74,          0.44,   0.42,  10.75,
      "06:Q3",      8.05,           0.6,       0.82,         0.75,          0.45,   0.44,  11.11,
      "06:Q4",      8.23,           0.6,       0.82,         0.77,          0.48,   0.41,  11.31,
      "07:Q1",      8.42,          0.61,       0.79,         0.76,          0.51,    0.4,   11.5,
      "07:Q2",      8.71,          0.62,       0.81,          0.8,          0.51,   0.41,  11.85,
      "07:Q3",      8.93,          0.63,       0.82,         0.82,          0.53,   0.41,  12.13,
      "07:Q4",       9.1,          0.65,       0.82,         0.84,          0.55,   0.42,  12.37,
      "08:Q1",      9.23,          0.66,       0.81,         0.84,          0.58,   0.42,  12.54,
      "08:Q2",      9.27,          0.68,       0.81,         0.85,          0.59,    0.4,   12.6,
      "08:Q3",      9.29,          0.69,       0.81,         0.86,          0.61,   0.41,  12.68,
      "08:Q4",      9.26,          0.71,       0.79,         0.87,          0.64,   0.41,  12.67,
      "09:Q1",      9.14,          0.71,       0.77,         0.84,          0.66,   0.41,  12.53,
      "09:Q2",      9.06,          0.71,       0.74,         0.82,          0.68,   0.39,  12.41,
      "09:Q3",      8.94,          0.71,       0.74,         0.81,          0.69,   0.38,  12.28,
      "09:Q4",      8.84,          0.71,       0.72,          0.8,          0.72,   0.38,  12.17,
      "10:Q1",      8.83,           0.7,        0.7,         0.76,          0.76,   0.36,  12.12,
      "10:Q2",       8.7,          0.68,        0.7,         0.74,          0.76,   0.35,  11.94,
      "10:Q3",      8.61,          0.67,       0.71,         0.73,          0.78,   0.34,  11.84,
      "10:Q4",      8.45,          0.67,       0.71,         0.73,          0.81,   0.34,  11.71,
      "11:Q1",      8.54,          0.64,       0.71,          0.7,          0.84,   0.33,  11.75,
      "11:Q2",      8.52,          0.62,       0.71,         0.69,          0.85,   0.33,  11.73,
      "11:Q3",       8.4,          0.64,       0.73,         0.69,          0.87,   0.33,  11.66,
      "11:Q4",      8.27,          0.63,       0.73,          0.7,          0.87,   0.33,  11.54,
      "12:Q1",      8.19,          0.61,       0.74,         0.68,           0.9,   0.32,  11.44,
      "12:Q2",      8.15,          0.59,       0.75,         0.67,          0.91,   0.31,  11.38,
      "12:Q3",      8.03,          0.57,       0.77,         0.67,          0.96,   0.31,  11.31,
      "12:Q4",      8.03,          0.56,       0.78,         0.68,          0.97,   0.32,  11.34,
      "13:Q1",      7.93,          0.55,       0.79,         0.66,          0.99,   0.31,  11.23,
      "13:Q2",      7.84,          0.54,       0.81,         0.67,          0.99,    0.3,  11.15,
      "13:Q3",       7.9,          0.54,       0.85,         0.67,          1.03,    0.3,  11.28,
      "13:Q4",      8.05,          0.53,       0.86,         0.68,          1.08,   0.32,  11.52,
      "14:Q1",      8.17,          0.53,       0.88,         0.66,          1.11,   0.31,  11.65,
      "14:Q2",       8.1,          0.52,       0.91,         0.67,          1.12,   0.32,  11.63,
      "14:Q3",      8.13,          0.51,       0.93,         0.68,          1.13,   0.33,  11.71,
      "14:Q4",      8.17,          0.51,       0.96,          0.7,          1.16,   0.34,  11.83,
      "15:Q1",      8.17,          0.51,       0.97,         0.68,          1.19,   0.33,  11.85,
      "15:Q2",      8.12,           0.5,       1.01,          0.7,          1.19,   0.34,  11.85,
      "15:Q3",      8.26,          0.49,       1.05,         0.71,           1.2,   0.35,  12.07,
      "15:Q4",      8.25,          0.49,       1.06,         0.73,          1.23,   0.35,  12.12,
      "16:Q1",      8.37,          0.49,       1.07,         0.71,          1.26,   0.35,  12.25,
      "16:Q2",      8.36,          0.48,        1.1,         0.73,          1.26,   0.36,  12.29,
      "16:Q3",      8.35,          0.47,       1.14,         0.75,          1.28,   0.37,  12.35,
      "16:Q4",      8.48,          0.47,       1.16,         0.78,          1.31,   0.38,  12.58,
      "17:Q1",      8.63,          0.46,       1.17,         0.76,          1.34,   0.37,  12.73,
      "17:Q2",      8.69,          0.45,       1.19,         0.78,          1.34,   0.38,  12.84,
      "17:Q3",      8.74,          0.45,       1.21,         0.81,          1.36,   0.39,  12.96,
      "17:Q4",      8.88,          0.44,       1.22,         0.83,          1.38,   0.39,  13.15,
      "18:Q1",      8.94,          0.44,       1.23,         0.82,          1.41,   0.39,  13.21,
      "18:Q2",         9,          0.43,       1.24,         0.83,          1.41,   0.39,  13.29,
      "18:Q3",      9.14,          0.42,       1.27,         0.84,          1.44,    0.4,  13.51,
      "18:Q4",      9.12,          0.41,       1.27,         0.87,          1.46,   0.41,  13.54,
      "19:Q1",      9.24,          0.41,       1.28,         0.85,          1.49,    0.4,  13.67,
      "19:Q2",      9.41,           0.4,        1.3,         0.87,          1.48,   0.41,  13.86
     )

Plot a line plot between Student.Loan and Credit.Card

debt %>% 
  ggplot(aes(Student.Loan, Credit.Card)) +
  geom_line()

debt %>% 
  mutate(dummy = seq(1:nrow(debt))) %>% 
  ggplot(aes(Student.Loan, Credit.Card)) +
  geom_line() +
  transition_reveal(dummy)

5 - 7

debt.date <- debt %>%
  mutate(date = seq.Date(as.Date('2003-01-01'), as.Date('2019-06-01'), by = '3 month'))

debt.date %>% 
  ggplot(aes(Student.Loan, Credit.Card)) +
  geom_line() +
  transition_reveal(date)

debt.date %>% 
  ggplot(aes(Student.Loan, Credit.Card)) +
  geom_line() +
  geom_point() +
  geom_text(aes(label = Student.Loan)) +
  transition_reveal(date)

8

debt.date.long <- debt.date %>% 
  select(-1) %>% 
  gather(DebtType, Amount, -date)

debt.date.long %>% 
  ggplot(aes(date, Amount, color = DebtType))+
    geom_line() +
  geom_point() +
  geom_text(aes(label = Amount)) +
  transition_reveal(date)

9 - Mortgage debt is most correlated with total debt.

cor(debt[-1])
##                Mortgage HE.Revolving  Auto.Loan Credit.Card Student.Loan
## Mortgage      1.0000000    0.6183166  0.4639135   0.6024080    0.6136820
## HE.Revolving  0.6183166    1.0000000 -0.3506511   0.2111744   -0.1018571
## Auto.Loan     0.4639135   -0.3506511  1.0000000   0.4375437    0.8376519
## Credit.Card   0.6024080    0.2111744  0.4375437   1.0000000    0.1734780
## Student.Loan  0.6136820   -0.1018571  0.8376519   0.1734780    1.0000000
## Other        -0.4056250   -0.3855664 -0.0737936   0.4364279   -0.5462505
## Total         0.9728223    0.4397200  0.6465033   0.5906321    0.7667530
##                   Other      Total
## Mortgage     -0.4056250  0.9728223
## HE.Revolving -0.3855664  0.4397200
## Auto.Loan    -0.0737936  0.6465033
## Credit.Card   0.4364279  0.5906321
## Student.Loan -0.5462505  0.7667530
## Other         1.0000000 -0.4120847
## Total        -0.4120847  1.0000000
debt.date.long %>% 
  filter(DebtType %in% c("Mortgage", "Total")) %>% 
  ggplot(aes(date, Amount, color = DebtType)) +
  geom_line() +
  geom_text(aes(label = Amount))+
  transition_reveal(date)

debt.date.long %>% 
  filter(!(DebtType %in% c("Mortgage", "Total"))) %>% 
  ggplot(aes(date, Amount, color = DebtType)) +
  geom_line() +
  geom_text(aes(label = Amount))+
  transition_reveal(date)

10 - Exploring data on the % of balances 90 days delinquent by loan type.

ninety.day.delinq <- tibble::tribble(
  ~Quarter, ~MORTGAGE, ~HELOC, ~AUTO,   ~CC, ~STUDENT.LOAN, ~OTHER, ~ALL,
   "03:Q1",      1.21,   0.35,  2.33,  8.84,          6.13,   7.23, 2.57,
   "03:Q2",      1.14,   0.28,  2.26,   8.9,          6.14,   7.13, 2.49,
   "03:Q3",       1.1,   0.22,  2.16,  8.67,          6.27,   6.88, 2.39,
   "03:Q4",      1.06,   0.31,  2.16,  9.24,          6.23,   7.47, 2.35,
   "04:Q1",      1.01,   0.21,  2.32,  9.27,          6.34,   7.68, 2.31,
   "04:Q2",         1,   0.15,  2.17,  8.85,          6.38,   7.74, 2.22,
   "04:Q3",      1.08,   0.18,  2.27,  8.65,           6.5,   7.48, 2.24,
   "04:Q4",      1.08,   0.21,  2.42,  9.18,          6.32,   7.01, 2.26,
   "05:Q1",      1.01,   0.25,  2.38,  9.59,          6.03,   7.25, 2.21,
   "05:Q2",      0.87,   0.24,  1.99,  9.23,          6.71,   6.17, 2.02,
   "05:Q3",      0.91,    0.2,  2.03,  9.07,          6.99,   5.96, 2.02,
   "05:Q4",      0.93,   0.16,  2.09,  8.53,          6.59,   5.94, 1.97,
   "06:Q1",      0.92,   0.17,  2.15,  8.82,          6.39,   5.85, 1.95,
   "06:Q2",      0.86,   0.39,  2.22,  8.96,          6.66,   5.55, 1.91,
   "06:Q3",      1.07,    0.5,  2.58,  9.19,          7.16,   5.11, 2.11,
   "06:Q4",      1.31,   0.61,  2.62,  9.66,          7.14,   5.46, 2.33,
   "07:Q1",      1.56,   0.65,  2.59,  9.74,          6.85,   5.74,  2.5,
   "07:Q2",      1.76,   0.77,  2.54,  9.38,          7.29,   5.91, 2.66,
   "07:Q3",      2.23,    1.2,  2.76,  9.34,          7.59,   6.14, 3.06,
   "07:Q4",      2.93,   1.32,  3.05,  9.48,          7.51,    6.2, 3.62,
   "08:Q1",      3.94,   1.86,  3.22,  9.49,          7.38,   6.83, 4.41,
   "08:Q2",      4.16,   2.21,  3.26, 10.15,          7.55,   6.85, 4.64,
   "08:Q3",      4.73,   2.66,  3.64,  9.48,          7.55,   7.62, 5.11,
   "08:Q4",      5.59,   3.33,  3.94, 10.18,          7.82,   8.58, 5.89,
   "09:Q1",      6.97,   3.77,  4.35, 11.44,          7.88,   9.27, 7.05,
   "09:Q2",      7.93,   3.97,  4.47, 11.74,          8.26,   8.74,  7.8,
   "09:Q3",      8.17,   4.18,  4.68,  11.9,          8.45,   9.06, 8.02,
   "09:Q4",      8.75,   4.37,  4.92,  12.7,          8.66,   9.22, 8.54,
   "10:Q1",      8.89,   4.05,  5.01, 13.73,          8.66,   9.94, 8.71,
   "10:Q2",      8.36,   4.29,  4.84, 13.74,          8.95,  10.28, 8.35,
   "10:Q3",      7.82,   4.23,  4.83, 13.16,          9.17,   11.3, 7.95,
   "10:Q4",      7.61,   4.29,  5.27, 13.27,          9.12,  10.83, 7.83,
   "11:Q1",      7.46,   4.66,  5.09, 13.12,          8.96,  10.64, 7.69,
   "11:Q2",      6.91,   4.66,  4.99, 12.16,          9.09,   10.4, 7.24,
   "11:Q3",      6.83,    4.7,  5.03,  11.5,          8.84,  10.69, 7.14,
   "11:Q4",      6.89,   4.71,  4.82, 11.48,          8.45,  10.51, 7.14,
   "12:Q1",      6.67,   4.69,  4.55, 11.27,          8.69,  10.24, 6.96,
   "12:Q2",      6.33,   4.92,  4.24,  10.9,          8.92,  10.24, 6.71,
   "12:Q3",       5.9,   4.93,  4.25, 10.45,            11,   9.83, 6.55,
   "12:Q4",      5.58,   3.48,  4.03, 10.57,         11.73,   9.62, 6.31,
   "13:Q1",      5.35,   3.22,  3.92, 10.21,         11.19,   9.83, 6.07,
   "13:Q2",      4.94,      3,  3.57,  9.99,          10.9,   9.54,  5.7,
   "13:Q3",      4.31,   3.51,  3.37,  9.36,         11.83,   8.97, 5.31,
   "13:Q4",      3.93,   3.19,  3.35,  9.45,         11.51,   8.94, 5.03,
   "14:Q1",      3.72,   3.37,  3.32,  8.51,         11.01,   8.66, 4.77,
   "14:Q2",      3.39,   3.33,  3.27,  7.83,         10.92,   8.17, 4.49,
   "14:Q3",      3.18,   3.34,  3.14,  7.46,         11.09,      8, 4.33,
   "14:Q4",      3.07,   3.16,  3.47,  7.31,         11.32,    7.9,  4.3,
   "15:Q1",      2.95,   3.04,  3.34,  8.38,         11.06,   7.95, 4.25,
   "15:Q2",      2.51,   3.24,  3.36,  8.39,         11.45,   7.26, 3.98,
   "15:Q3",      2.32,   2.44,  3.36,  8.21,         11.56,      7, 3.79,
   "15:Q4",      2.18,   2.24,  3.37,  7.65,         11.52,   7.02, 3.69,
   "16:Q1",      2.08,   2.19,  3.52,   7.6,         11.04,   7.89,  3.6,
   "16:Q2",      1.76,   1.96,  3.46,  7.17,         11.06,   7.22, 3.34,
   "16:Q3",      1.63,   2.03,  3.58,  7.08,         10.94,   7.13, 3.28,
   "16:Q4",      1.57,   2.13,  3.75,  7.14,         11.17,      7,  3.3,
   "17:Q1",      1.67,   2.06,  3.82,  7.45,         10.98,   7.22, 3.37,
   "17:Q2",      1.47,   1.88,  3.92,  7.38,         11.22,   6.91, 3.26,
   "17:Q3",      1.38,   1.53,  3.97,  7.47,         11.17,   6.66, 3.19,
   "17:Q4",      1.27,   1.67,  4.05,  7.55,         10.96,   6.78, 3.12,
   "18:Q1",      1.22,   1.51,  4.26,  8.01,         10.66,   7.12, 3.11,
   "18:Q2",      1.11,   1.56,  4.17,  7.88,         10.94,   7.05, 3.04,
   "18:Q3",      1.06,    1.2,  4.27,  7.94,         11.53,   7.15, 3.09,
   "18:Q4",      1.06,   1.16,  4.47,  7.77,         11.42,   6.96,  3.1,
   "19:Q1",         1,   1.25,  4.69,  8.32,         10.85,   7.19, 3.06,
   "19:Q2",      0.87,    1.1,  4.64,  8.32,         10.83,   7.16, 2.94
  )
ninety.day.delinq %>% 
  mutate(n = seq(1:nrow(ninety.day.delinq))) %>% 
  ggplot(aes(n, ALL)) +
  transition_reveal(n) +
  geom_line()

ninety.day.delinq %>% 
  mutate(n = seq(1:nrow(ninety.day.delinq))) %>% 
  ggplot(aes(n, MORTGAGE)) +
  transition_reveal(n) +
  geom_line()

ninety.day.delinq %>% 
  mutate(n = seq(1:nrow(ninety.day.delinq))) %>% 
  ggplot(aes(n, STUDENT.LOAN)) +
  transition_reveal(n) +
  geom_line()